﻿using System;
using System.Collections.Generic;
using System.Data.OleDb;
using System.Linq;
using System.Text;
using DTO;

namespace DAO
{
    public class DichVuDAO : DataProvider
    {
        protected override object GetDataRowFromDataReader(OleDbDataReader dr)
        {
            DichVuDTO dichVuDTO = new DichVuDTO();
            if (!dr.IsDBNull(0))
            {
                dichVuDTO.MaDichVu = dr.GetInt32(0);
            }
            
            if (!dr.IsDBNull(1))
            {
                dichVuDTO.TenDichVu = dr.GetString(1);
            }

            return (object)dichVuDTO;
        }

        public DichVuDTO Search(int id)
        {
            DichVuDTO dichVuDTO = null;
            try
            {
                string strSQL = @"SELECT *" +
                                @" FROM DICHVU" +
                                @" WHERE MaDichVu = " + id.ToString();

                using (OleDbDataReader dr = this.ExcuteReader(strSQL))
                {
                    if (dr.Read())
                    {
                        dichVuDTO = (DichVuDTO)GetDataRowFromDataReader(dr);
                    }
                }
            }
            catch (Exception ex)
            {
                dichVuDTO = null;
            }

            return dichVuDTO;
        }

        public List<DichVuDTO> GetAllDichVuDTO()
        {
            List<DichVuDTO> lstDichVuDTO = new List<DichVuDTO>();
            try
            {
                string strSQL = @"SELECT *" +
                                @" FROM DICHVU";

                using (OleDbDataReader dr = this.ExcuteReader(strSQL))
                {
                    while (dr.Read())
                    {
                        DichVuDTO dichVuDTO = (DichVuDTO)GetDataRowFromDataReader(dr);
                        lstDichVuDTO.Add(dichVuDTO);
                    }
                }
            }
            catch (Exception ex)
            {
                lstDichVuDTO = new List<DichVuDTO>();
            }

            return lstDichVuDTO;
        }

        public int GetIdByName(string name)
        {
            int maDichVu = -1;
            try
            {
                string strSQL = @"SELECT MaDichVu" +
                                @" FROM DICHVU" +
                                @" WHERE TenDichVu = '" + name + "'";

                using (OleDbDataReader dr = this.ExcuteReader(strSQL))
                {
                    if (dr.Read())
                    {
                        maDichVu = dr.GetInt32(0);
                    }
                }
            }
            catch (Exception ex)
            {
                maDichVu = -1;
            }

            return maDichVu;
        }
    }
}
